package com.codingman.springbootdemo7;

import static org.junit.jupiter.api.Assertions.*;

import java.util.List;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.jdbc.Sql;

/*
 * @JdbcTest 类似于 @DataJpaTest 但用于纯 jdbc 相关测试。 
 * 默认情况下，它还将配置一个内存嵌入式数据库和一个 JdbcTemplate。 
 * 常规的@Component bean 不会加载到 ApplicationContext 中。
 * 默认情况下，JDBC 测试是事务性的，并且在每个测试结束时回滚
 */

/*
 * @AutoConfigureTestDatabase(replace=Replace.NONE)
 * 使用真实数据库
 */
@JdbcTest
@Import(EmployeeDao.class)
@Sql({"/db/test.sql"})
class EmployeeDaoTest2 {

	@Autowired
	EmployeeDao dao;

	@Test
	void test() {
		assertTrue(dao != null);
		
		Employee e = new Employee();
		e.setName("aaa");
		e.setPassword("789");
		e.setEmail("aaa@codingman.com");
		e.setSex("F");
		e.setCountry("China");
		
		dao.save(e);
		
//		e.setId(1);
//		e.setName("bbb");
//		assertTrue(dao.update(e));
		
//		assertTrue(dao.delete(1));
		
//		e = dao.getEmployeeById(2).get();
//		System.out.println(e);
			
		List<Employee> employees = dao.getAllEmployees();
		for(Employee employee: employees)
		{
			System.out.println(employee);
		}
	}

}
